Distribution of multimedia (also referred to herein as “media” and/or “program(s)”), such as movies and the like, from network services to a client device may be achieved through adaptive bitrate streaming of the media. Conventional adaptive bitrate streaming includes determining streaming conditions, e.g., an available streaming bandwidth at the client device, and then selecting a presentation quality of the streamed media accordingly. Typically, source media or programs may be encoded at different bitrates into multiple streams that are stored by the network services. Adjusting the presentation quality includes switching between the different streams, i.e., switching between the different bitrates, while streaming. Required streaming bandwidth and presentation quality increase and decrease as the encoded bitrates increase and decrease. Accordingly, more and less available streaming bandwidth may translate to more and less presentation quality, respectively. Given streaming bandwidth constraints at the client device, there is a persistent need to conserve bandwidth while streaming programs. Accordingly, conventional streaming techniques typically stream a single program at any given time to conserve bandwidth.
From the perspective of the network service, streaming a program includes transmitting the media for the program in response to requests from the client device. The streamed program may include previously recorded media or, alternatively, live media. From the perspective of the client device, streaming a program includes continuously requesting and receiving the media for the program from the network services, and storing the received media for the program in a buffer for subsequent presentation or playback, essentially, in near real-time, i.e., without having to download the entire stream prior to playback. The buffered program may be presented, i.e., played back, in audio-visual form, for example. To avoid an unwanted interruption in presentation while streaming, a sufficient quantity of the streamed program must be stored in the buffer to avoid emptying the buffer prior to receipt of a next portion of streamed program. Typically, several seconds-worth of a streamed program may need to be buffered in this manner prior to its presentation.
Typically, streaming of a program is initiated when a user selects a program from a channel guide presented to the user on the client device. Often, the user channel surfs, i.e., switches between programs (or channels) every few seconds in search of a preferred program on which to settle. At each switch, the client device must initiate the streaming of the new program. However, the client device may be required to negotiate authorization rights for the new program before it can be streamed. Such negotiation introduces an undesirable delay, namely, an authorization delay, between the program switch and when the new program may actually be streamed and presented to a user.
Additionally, at every program switch, buffering of the streamed program introduces further delay prior to presentation. That is, the buffering introduces an undesired buffer delay between when the user selects a new program for presentation and when that program is actually presented. Together, the buffer and authorization delays create an overall presentation delay that can be frustrating to a user when switching between programs, especially while program surfing.
In the drawings, the leftmost digit(s) of a reference number identifies the drawing in which the reference number first appears.